/* Universidad del Valle de Guatemala
 * Sara López 12050
 * Matías Vasquez 12186
 * Sección: 21
 * Nombre: Lista.java
 */

/**
 * Clase que describe los objetos de tipo nodo (Node), necesarios para la definición de 
 * listas enlazadas. Tomado del capítulo 9 del libro Java Structures de Duane A. Bailey.
 */
public class Node<E> {
    protected E data;
    protected Node<E> nextElement;
    
    /*
    * pre: v es un valor que tiene referencia con el resto de la lista
    * post: se crea un elemento en head
    */
    public Node(E v, Node<E> next) {
        data = v;
        nextElement = next;
    }
    
    /**
     * Pre: ninguna.
     * Post: construye una nueva cola para la lista, con valor igual a value.
     */ 
    public Node(E v) {
        this(v, null);
    }
    
    /**
    * next
    * post: devuelve el siguiente valor en la lista
    */
    public Node<E> next() {
        return nextElement;
    }

    /** 
     * Pre: ninguna.
     * Post: establece una referencia a un elemento siguiente (next).
     */ 
    public void setNext(Node<E> next) {
        nextElement = next;
    }

    /**
    * value
    * post: devuelve data
    */
    public E value() {
        return data;
    }

    /**
    * pre:
    * post: inserta un valor
    */
    public void setValue(E value) {
        data = value;
    }
}